from sqlalchemy import Column, Integer, String, Text, Float, DateTime, Index
from datetime import datetime
from .base import Base


class Question(Base):
    """
    题目数据表模型

    存储各类题型的基础信息，支持按专业、课程、难度、类型等多维度查询
    """
    __tablename__ = "questions"  # 数据库表名

    # 核心字段
    id = Column(Integer, primary_key=True, index=True, autoincrement=True, comment="题目唯一ID")
    content = Column(Text, nullable=False, comment="题目内容（如'1+1等于几？'）")
    question_type = Column(String(20), nullable=False,
                           comment="题型：single_choice（单选）、fill_blank（填空）、short_answer（简答）")
    difficulty = Column(Float, nullable=False, comment="难度系数（0-5分，0最低，5最高）")
    answer = Column(Text, nullable=False, comment="标准答案")
    analysis = Column(Text, nullable=True, comment="题目解析（可选）")

    # 分类字段（用于组卷筛选）
    grade= Column(String(50), nullable=False, comment="所属年纪，如高一")
    subject = Column(String(50), nullable=False, comment="所属学科如数学")

    # 元数据
    created_at = Column(DateTime, default=datetime.now, comment="创建时间（UTC）")
    updated_at = Column(DateTime, default=datetime.now, onupdate=datetime.now, comment="更新时间（UTC）")
    created_by = Column(String(50), nullable=True, comment="创建人（用户ID或'AI'）")


    def __repr__(self) -> str:
        """打印对象时显示的信息（Python 3.12要求明确返回类型）"""
        return f"<Question(id={self.id}, type={self.question_type}, difficulty={self.difficulty})>"
